<?php

/**
 * monitoreo actions.
 *
 * @package    comande
 * @subpackage monitoreo
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class monitoreoActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function preExecute()
  {

          $simpleSAMLAuth = new SimpleSAML_Auth_Simple('default-sp');
          if (!$simpleSAMLAuth->isAuthenticated())
          {
               return $this->redirect('saml/logout');
          }
          else
          {
              $redirect = $this->redirectUserLogin();
              if($redirect['success'])
              {
                  $this->getUser()->setAttribute("s_template",$redirect['template']);
              }
              else
              {
                $this->redirect($redirect['template']);
              }

          }

  }

  /*
   * Este examina que tipo de usuario esta ingresando al sistema
   * asi puedo elejir asia donde lo redirijo
   */
  public function redirectUserLogin()
  {

      $userBean = $this->getUser()->getAttribute('ses_currentUserObject',null);
      if(is_object($userBean))
      {

            if($userBean->getIdPaquetePractil()==0)
            /*si no tiene un paquete puede ser que sea invitado(modo cliente)
             * o que se halla registrado conociendo el producto */
            {
                /*Buscar si es invitado....*/
                $criteria = new Criteria();
                $criteria->add(SolicitudesPeer::EMAIL_USER,$userBean->getEmail());
                $criteria->add(SolicitudesPeer::ESTADO,0);

                $solicitudBean = SolicitudesPeer::doSelectOne($criteria);

                if(is_object($solicitudBean))
                /* Si tiene una solicitud de grupo */
                {
                    return array("success"=>true,"template"=>"Download");
                }
                else
                /* tengo que mandarlo a que elija un paquete de practil */
                {
                    return array("success"=>false,"template"=>"http://www.practil.com/planes/comande");

                }
            }
            else
            /* si ya posee un paquete redireccione al monitoreo */
            {
               return array("success"=>true,"template"=>"Monitoreo");

            }

      }
  }

  public function executeLoginLocaHost(sfWebRequest $request)
  {
      $user     = $request->getParameter('txt-email');
      $password = $request->getParameter('txt-password');


      $lib = new practil_lib();
      $url = $lib->url_practil_login($user, $password);

      $respuesta_login = file_get_contents($url);
      $decode = json_decode($respuesta_login);
      $this->getUser()->setAttribute('s_pk_practil_associate_account',null);

      if($decode->{'success'}){
            $criteria = new Criteria();
            $criteria->add(UserScPeer::PROFILE,$decode->{'pkaccount'});
            $current_user = UserScPeer::doSelectOne($criteria);
            if(is_object($current_user)){
                   /* $json  = array("helpStrategy1" => true,"helpStrategy2" => true);
                    $json  = json_encode($json);
                    $current_user->setOptions($json);
                    $current_user->save();*/
                    $this->getUser()->setAuthenticated(true);
                    $this->getUser()->setAttribute(sfConfig::get('app_session_current_user'),$current_user);
                    $this->getUser()->setAttribute(sfConfig::get('app_session_current_user_name'),$decode->{'name'});
                    return $this->redirect('@homepage');
            }else{
                    return $this->redirect('@homepage');
            }
      }else{
          if($decode->{'code'}=="p-10004"){
            $this->token = md5($decode->{'code'});
            $this->user = $user;
            $this->getUser()->setAttribute('s_pk_practil_associate_account',$decode->{'tokenpk'});
            return 'Practil';
          }else{
             return $this->redirect('@homepage');
          }
      }



  }


public function executeIndex(sfWebRequest $request)
{

    $userBean = $this->getUser()->getAttribute('ses_currentUserObject',null);
    $criteria = new Criteria();
   // $criteria->add(GruposTrabajoPeer::USUARIO_ID,1);
    $criteria->add(GruposTrabajoPeer::USUARIO_ID,$userBean->getId());
    $listGroup = GruposTrabajoPeer::doSelect($criteria);
    $this->listGroup = $listGroup;

    $this->lista_grupos = null;
    $template = $this->getUser()->getAttribute('s_template', null);
    $this->getUser()->getAttributeHolder()->remove('s_template');

    if($template!=null)
    {
        return $template;
    }
    else
    {
        return sfView::ERROR;
    }


}

   public function executeAjax_view_historial(sfWebRequest $request)
   {

     $simpleSAMLAuth = new SimpleSAML_Auth_Simple('default-sp');
     $attributes = $simpleSAMLAuth->getAttributes();

     if($simpleSAMLAuth->isAuthenticated())
     {
          $recurso = new myLib();
          $codigo_usuario = $request->getParameter('idusuario_pc');
          $fecha = date("Y-m-d H:i");
          $utc_date = DateTime::createFromFormat(
                        'Y-m-d G:i',
                        $fecha,
                        new DateTimeZone('UTC')
          );

          $nyc_date = $utc_date;
          $nyc_date->setTimeZone(new DateTimeZone('America/Lima'));
          //$nyc_date->setTimeZone(new DateTimeZone('Africa/Johannesburg'));

          $fecha_envio_server = $nyc_date->format('Y-m-d');
          $new_cri = new Criteria();
          $new_cri->add(DetalleConsumoUsuarioPeer::FECHA, "%".$fecha_envio_server."%",Criteria::LIKE );
          $new_cri->add(DetalleConsumoUsuarioPeer::USUARIO_ID,$codigo_usuario,Criteria::LIKE);
          $obj_historial = DetalleConsumoUsuarioPeer::doSelectOne($new_cri);

          // pasos para armar el historial.
          //1.- obitienes los nombres de los aplicativos
          if(is_object($obj_historial))
          {

              $serviceReportes = new serviceReportes();
              $xmlElement = new SimpleXMLElement($obj_historial->getArrayConsumo());
              $array = $serviceReportes->dataReportingHistoryApplications($xmlElement);
              $this->listHistory =  $array['array'];

               $this->aplicaciones = null;
               $this->lista_historial = null;

           }
           else
           {
               $this->aplicaciones = null;
               $this->lista_historial = null;
           }
      }


   }

   public function executeAjax_show_images(sfWebRequest $request)
   {

     $simpleSAMLAuth = new SimpleSAML_Auth_Simple('default-sp');
       $attributes = $simpleSAMLAuth->getAttributes();
      if ($simpleSAMLAuth->isAuthenticated()){

        $id = $request->getParameter('idusuario_pc');
    $username = "grafilab"; // username
    $key = "5428d56bf36120fc2b5414393df70046"; // api key
    // Connect to Rackspace
    $auth = new CF_Authentication($username, $key);

    // Returns a valid storage token and allows you
    // to connect to the Cloud Files Platform
    $auth->authenticate();

    // Allows us to connect to Cloud Files and
    // make changes to containers
    $conn = new CF_Connection($auth);

    // Get the container where the client's assets are stored
    $cont = $conn->get_container('ComandeFiles');

    // Return Array of the objects inside the client's container
   /* $objs = $cont->list_objects();

    // Get the URI for the client's container
    $cdnuri = $cont->cdn_uri . "/";
    */

    // Go through the Array of objects and output them with links

    /*
     * obtengo los nombres de los
     */
    $array_nombres_images = array();
    $array_images = array();

    $fecha = date("Y-m-d");
    $new_criteria = new Criteria();
    $new_criteria ->add(DetalleConsumoUsuarioPeer::USUARIO_ID,$id);
    $new_criteria ->add(DetalleConsumoUsuarioPeer::FECHA, $fecha);

    $obj_encontrado = DetalleConsumoUsuarioPeer::doSelectOne($new_criteria);

    if(is_object($obj_encontrado)){

        $nombres_imagenes = $obj_encontrado->getArrayIdProgramas();

        if($nombres_imagenes != null){
            $obj = json_decode($nombres_imagenes);

             foreach ($obj->{'images'} as $row){
                              foreach($row as $file){
                                $array_nombres_images[] =  $file;
                              }

                        }


        }else{
            $array_nombres_images = null;
        }
    }else{
        $array_nombres_images = null;
    }

    if(count($array_nombres_images)>0){
         for ($i = 0; $i < (count($array_nombres_images)); $i++) {
            try{
                    $doc = $cont->get_object($array_nombres_images[$i]);
                    $data = $doc->read();
                    $array_images[] = base64_encode($data);
            }catch (Exception $e){
              echo 'no existe';
            }
    }
   }
   $this->lista_files_images = $array_images;

    /*
      $parameter = $request->getParameter('image');
      $username = "grafilab";
      $key = "5428d56bf36120fc2b5414393df70046";
      $auth = new CF_Authentication($username, $key);
      $auth->authenticate();
      $conn = new CF_Connection($auth);
      $my_docs  = $conn->get_container('ComandeFiles');
//    $cont  = $conn->get_container('ComandeFiles');

   try{
          $doc = $my_docs->get_object($parameter);
    }catch (Exception $e){
               echo 'no existe';
        }

      //   $doc->save_to_filename('/var/www/images/copia-prueba.jpg');


         $data = $doc->read();
         $this->file= base64_encode($data);

     */


      }




   }

}
